gchar *mb_charset;
GdkWindow *client_window;
+ Window client_window_xid;
GtkWidget *client_widget;
/* The status window for this input context; we claim the
}
context_xim->client_window = client_window;
+ context_xim->client_window_xid = None;
if (context_xim->client_window)
{
+ GdkWindow *native;
+
context_xim->im_info = get_im (context_xim->client_window, context_xim->locale);
context_xim->im_info->ics = g_slist_prepend (context_xim->im_info->ics, context_xim);
+
+ for (native = client_window; native; native = gdk_window_get_parent (native))
+ {
+ if (gdk_window_has_native (native))
+ {
+ context_xim->client_window_xid = gdk_x11_window_get_xid (native);
+ break;
+ }
+ }
}
update_client_widget (context_xim);
xevent.keycode = event->hardware_keycode;
xevent.same_screen = True;
- if (XFilterEvent ((XEvent *)&xevent, GDK_WINDOW_XID (context_xim->client_window)))
+ if (XFilterEvent ((XEvent *)&xevent, context_xim->client_window_xid))
return TRUE;
if (event->state &
xic = XCreateIC (context_xim->im_info->im,
XNInputStyle, im_style,
- XNClientWindow, GDK_WINDOW_XID (context_xim->client_window),
+ XNClientWindow, context_xim->client_window_xid,
name1, list1,
name2, list2,
NULL);